/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.documentar.DAO;

import br.com.documentar.interfacee.InterfaceDAO;
import br.com.documentar.model.AcessoColaboradorModel;
import java.sql.SQLException;
import java.util.Collections;
import java.util.List;
import javafx.print.Collation;

/**
 *
 * @author Santos
 */
public class AcessoColaboradorDAO extends AbstractDAO implements InterfaceDAO<List<AcessoColaboradorModel>, AcessoColaboradorModel> {

    @Override
    public boolean setDados(AcessoColaboradorModel model) {
        String sql = null;
        ConnectDataBase();
        switch (model.getActionScript()) {
            case "I":
                sql = "INSERT INTO \n"
                        + "  `tlnk_colaborador_janela`\n"
                        + "(\n"
                        + "  `TLNK_COLABORADOR_PK`,\n"
                        + "  `TLNK_JANELA_PK`) \n"
                        + "VALUE (\n"
                        + "  " + model.getColaborador().getCodigo() + ",\n"
                        + "  " + model.getJanela().getCodigo() + ")";
                break;
            case "U":
                sql = "Recurso indisponível para essa versão";
                break;
            case "D":
                sql = "DELETE FROM \n"
                        + "  `tlnk_colaborador_janela` \n"
                        + "WHERE \n"
                        + "  `TLNK_COLABORADOR_PK` = " + model.getColaborador().getCodigo() + " AND \n"
                        + "  `TLNK_JANELA_PK` = " + model.getJanela().getCodigo() + "";
                break;
        }
        return InsertUpdateDelete(sql, model.getNomeTela());
    }

    @Override
    public List<AcessoColaboradorModel> getDados(AcessoColaboradorModel model) {
        model.setResultSet(null);
        model.getListaAcessoColaborador().clear();
        String sql = "SELECT \n"
                + "  colaboradorJanela.`TLNK_COLABORADOR_PK`,\n"
                + "  `colaborador`.`TCOL_NOME`,\n"
                + "  colaboradorJanela.`TLNK_JANELA_PK`,\n"
                + "  `janela`.`TJAN_NOME`\n"
                + " FROM \n"
                + "  `tlnk_colaborador_janela` colaboradorJanela\n"
                + " INNER JOIN `tcol_colaborador` colaborador \n"
                + " on `colaboradorJanela`.`TLNK_COLABORADOR_PK` = `colaborador`.`TCOL_CODIGO_PK`\n"
                + " INNER JOIN `tjan_janela` janela \n"
                + " on `colaboradorJanela`.`TLNK_JANELA_PK` = janela.`TJAN_CODIGO_PK` ";
        try {
            ConnectDataBase();
            switch (model.getActionScript()) {
                case "C":
                    model.setResultSet(Select(sql, model.getNomeTela()));
                    break;
                case "P":
                    model.setResultSet(Select(sql + " WHERE ( `colaborador`.`TCOL_NOME` LIKE '%" + model.getColaborador().getNome() + "%' OR `janela`.`TJAN_NOME` like '%" + model.getJanela().getNome() + "%')", model.getNomeTela()));
                    break;
                case "porUsuario":
                    model.setResultSet(Select(sql + " WHERE `colaborador`.`TCOL_CODIGO_PK` = " + model.getColaborador().getCodigo() + "", model.getNomeTela()));
                    break;
            }
            while (model.getResultSet().next()) {
                br.com.documentar.model.AcessoColaboradorModel p = new br.com.documentar.model.AcessoColaboradorModel();
                p.getColaborador().setCodigo(rs.getInt("TLNK_COLABORADOR_PK"));
                p.getColaborador().setNome(rs.getString("TCOL_NOME"));
                p.getJanela().setCodigo(rs.getInt("TLNK_JANELA_PK"));
                p.getJanela().setNome(rs.getString("TJAN_NOME"));
                model.getListaAcessoColaborador().add(p);
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        } finally {
            Desconectar(model.getNomeTela());
        }
        Collections.sort(model.getListaAcessoColaborador());
        return model.getListaAcessoColaborador();
    }
}
